﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include <stdio.h>
int main()
{
	int n = 9;
	//9的二进制表示：0000 0000 0000 0000 0000 0000 0000 1001
	float* pFloat = (float*)&n;

	printf("n的值为：%d\n", n); printf("\n");

	printf("*pFloat的值为：%f\n", *pFloat); printf("\n");
	//%f打印，系统就会认为9的二进制表示形式是浮点数
	//S    E                M
	//0 00000000 00000000000000000001001
	//这就是E全为0的情况，E = -126
	//小数V = (-1)^0 × 0.00000000000000000001001×2^(-126)=1.001×2^(-146)
	//这个数非常小，打印出来那就是0.00000...

	*pFloat = 9.0;
	//9.0换为二进制 1001.0 ==  (−1) ∗(1.001) ∗ 2^3
	//E = 3 + 127 =130 二进制为 10000010
	//在内存存储形式
	// S     E             M
	// 0 10000010 00100000000000000000000

	printf("n的值为：%d\n", n); printf("\n");
	//%d打印，系统会认为这个32位的二进制数是某个整数的补码
	//0 10000010 00100000000000000000000 打印出来就是 1091567616

	printf("*pFloat的值为：%f\n", *pFloat);
}